local yanfeng = fk.CreateSkill({
    name = "sj3__yanfeng",
  })
  
  Fk:loadTranslationTable{
    ["sj3__yanfeng"] = "言锋",
    [":sj3__yanfeng"] = "你使用普通锦囊牌时，可以打出一张【杀】令此牌无法被响应;你使用【杀】时，可以打出一张非伤害牌令此牌目标+1。",
    --[":sj3__yanfeng"] = "你使用普通锦囊牌/【杀】时，可以打出一张【杀】/非伤害牌令此牌无法被响应/目标+1。",

    ["#sj3__yanfeng"] = "言锋：你可以打出一张%arg令 %arg3 %arg2",
    ["#sj3__yanfeng_1"] = "【杀】",
    ["#sj3__yanfeng_2"] = "非伤害牌",
    ["#sj3__yanfeng__1"] = "无法被响应",
    ["#sj3__yanfeng__2"] = "目标+1",
    ["#sj3__yanfeng-ask"] = "言锋：为 %arg 额外指定一个目标",

    ["$sj3__yanfeng1"] = "",
    ["$sj3__yanfeng2"] = "",
  }

  yanfeng:addEffect(fk.CardUsing, {
    can_trigger = function(self, event, target, player, data)
      return player:hasSkill(yanfeng.name) and target == player and
      ((data.card.trueName == "slash" and #data:getExtraTargets() > 0) or 
      data.card:isCommonTrick())
    end,
    on_cost = function(self, event, target, player, data)
      local ids = table.filter(player:getHandlyIds(),function (id)
        local card = Fk:getCardById(id)
        if data.card.trueName == "slash" then
          return not card.is_damage_card
        end
        return card.trueName == "slash"
      end)
      if #ids == 0 then return end
      local pattern = "slash"
      local prompt = "#sj3__yanfeng:::".."#sj3__yanfeng_1"..":".."#sj3__yanfeng__1"..":"..data.card:toLogString()
      if data.card.trueName == "slash" then
        pattern = tostring(Exppattern{ id = ids })
        prompt = "#sj3__yanfeng:::".."#sj3__yanfeng_2"..":".."#sj3__yanfeng__2"..":"..data.card:toLogString()
      end
      local respond = player.room:askToResponse(player,{
        pattern = pattern,
        skill_name = yanfeng.name,
        prompt = prompt,
      })
      if respond then
        player.room:responseCard(respond)
        return true
      end
    end,
    on_use = function(self, event, target, player, data)
      local room = player.room
      if data.card.trueName ~= "slash" then
        data.disresponsiveList = data.disresponsiveList or {}
        data.disresponsiveList = room.players
      else
        if not player.dead then
          local t = data:getExtraTargets()[1]
          if #data:getExtraTargets() > 1 then
            t = room:askToChoosePlayers(player,{
              targets = data:getExtraTargets(),
              min_num = 1,
              max_num = 1,
              skill_name = yanfeng.name,
              cancelable = false,
              prompt = "#sj3__yanfeng-ask:::"..data.card:toLogString(),
            })[1]
          end
          data:addTarget(t)
        end
      end
    end,
  })

  return yanfeng